﻿using Spectre.Console;
using System;
using System.Threading.Tasks;

Console.Title = "Spectre.Console.Terminal";

// Plan A
var table = new Table().Centered();
await AnsiConsole.Live(table)
    .AutoClear(false)
    .Overflow(VerticalOverflow.Ellipsis)
    .Cropping(VerticalOverflowCropping.Top)
    .StartAsync(async ctx =>
    {
        while (true)
        {
            ctx.Refresh();
            var figletText = new FigletText(DateTime.Now.ToString())
                .Centered()
                .Color(Color.Yellow);
            // AnsiConsole.Cursor.Hide();
            AnsiConsole.Cursor.SetPosition(0, 0);
            AnsiConsole.Write(figletText);
            // AnsiConsole.Cursor.Show();
            await Task.Delay(1000);
        }
    });

// Plan B
// await PrintTimeAsync();

// static async Task PrintTimeAsync()
// {
//     while (true)
//     {
//         var figletText = new FigletText(DateTime.Now.ToString())
//             .Centered()
//             .Color(Color.Green);
//         AnsiConsole.Cursor.Hide();
//         AnsiConsole.Cursor.SetPosition(0, 0);
//         AnsiConsole.Write(figletText);
//         AnsiConsole.Cursor.Show();

//         await Task.Delay(1000);
//     }
// }

// Plan C
// var console = AnsiConsole.Console;
// var timer = new System.Timers.Timer(1000);
// timer.Elapsed += (sender, e) =>
// {
//     console.Cursor.Hide();
//     console.Cursor.SetPosition(0, 0);
//     var figletText = new FigletText(DateTime.Now.ToString())
//         .Centered()
//         .Color(Color.Green);
//     console.Write(figletText);
//     console.Cursor.Show();
// };
// timer.Enabled = true;

// Thread.Sleep(Timeout.Infinite);